package com.lib.krismile.manager;

import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;

import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.StringUtils;
import com.lib.krismile.ui.web.SingleWebActivity;

import java.io.Serializable;
import java.util.Map;
import java.util.Set;

/*
 * @author ： wangJiaWei
 * @date : 2021/3/29
 * @description ：跳转公用类帮助(单列webView)
 */
public class ARouterCommonHelp {

    /**
     *  跳转页面 不携带参数跳转
     * @param tClass 目标页面
     */
    public static void navigationCommonPage(Class<?> tClass){
        Intent intent = new Intent(ActivityUtils.getTopActivity(), tClass);
        ActivityUtils.getTopActivity().startActivity(intent);
    }

    /**
     *  跳转页面 不携带参数跳转且回传
     * @param tClass 目标页面
     */
    public static void navigationCommonPage(Class<?> tClass,int requestCode){
        Intent intent = new Intent(ActivityUtils.getTopActivity(), tClass);
        ActivityUtils.getTopActivity().startActivityForResult(intent,requestCode);
    }

    /**
     *  跳转页面 携带参数跳转
     * @param tClass 目标页面
     * @param bundleKey 传参数 bundle对应的key值
     * @param bundle 传参数值
     */
    public static void navigationCommonPage(Class<?> tClass,String bundleKey,Bundle bundle){
        Intent intent = new Intent(ActivityUtils.getTopActivity(), tClass);
        intent.putExtra(bundleKey,bundle);
        ActivityUtils.getTopActivity().startActivity(intent);
    }

    /**
     *  跳转页面 携带参数跳转
     * @param tClass 目标页面
     * @param bundle 传参数值
     */
    public static void navigationCommonPage(Class<?> tClass,Bundle bundle){
        Intent intent = new Intent(ActivityUtils.getTopActivity(),tClass);
        ActivityUtils.getTopActivity().startActivity(intent,bundle);
    }

    /**
     *  跳转页面 携带参数跳转且回传
     * @param tClass 目标页面
     * @param bundleKey 传参数 bundle对应的key值
     * @param bundle 传参数值
     */
    public static void navigationCommonPage(Class<?> tClass,String bundleKey,Bundle bundle,int requestCode){
        Intent intent = new Intent(ActivityUtils.getTopActivity(), tClass);
        intent.putExtra(bundleKey,bundle);
        ActivityUtils.getTopActivity().startActivityForResult(intent,requestCode);
    }

    /**
     *  跳转页面 携带参数跳转且回传
     * @param tClass 目标页面
     * @param bundle 传参数值
     */
    public static void navigationCommonPage(Class<?> tClass,Bundle bundle,int requestCode){
        Intent intent = new Intent(ActivityUtils.getTopActivity(), tClass);
        ActivityUtils.getTopActivity().startActivityForResult(intent,requestCode,bundle);
    }

    /**
     *  跳转页面 携带参数跳转
     * @param tClass 目标页面
     * @param parameterMap 携带map跳转
     */
    public static void navigationCommonPage(Class<?> tClass, Map<String,Object> parameterMap){
        Intent intent = new Intent(ActivityUtils.getTopActivity(), tClass);
        Set<String> parameterKeySet = parameterMap.keySet();
        Object parameterValue;
        for (String parameterKey : parameterKeySet){
            parameterValue = parameterMap.get(parameterKey);
            if (parameterValue instanceof String){
                intent.putExtra(parameterKey,(String) parameterValue);
            }
            if (parameterValue instanceof Boolean){
                intent.putExtra(parameterKey,(Boolean) parameterValue);
            }
            if (parameterValue instanceof Integer){
                intent.putExtra(parameterKey,(Integer) parameterValue);
            }
            if (parameterValue instanceof Long){
                intent.putExtra(parameterKey,(Long) parameterValue);
            }
            if (parameterValue instanceof Double){
                intent.putExtra(parameterKey,(Double) parameterValue);
            }
            if (parameterValue instanceof Float){
                intent.putExtra(parameterKey,(Float) parameterValue);
            }
            if (parameterValue instanceof Short){
                intent.putExtra(parameterKey,(Short) parameterValue);
            }
            if (parameterValue instanceof Serializable){
                intent.putExtra(parameterKey,(Serializable) parameterValue);
            }
            if (parameterValue instanceof CharSequence){
                intent.putExtra(parameterKey,(CharSequence) parameterValue);
            }
            if (parameterValue instanceof Parcelable){
                intent.putExtra(parameterKey,(Parcelable) parameterValue);
            }
        }
        ActivityUtils.getTopActivity().startActivity(intent);
    }

    /**
     *  跳转页面 携带参数跳转且回传
     * @param tClass 目标页面
     * @param parameterMap 携带map跳转
     */
    public static void navigationCommonPage(Class<?> tClass, Map<String,Object> parameterMap,int requestCode){
        Intent intent = new Intent(ActivityUtils.getTopActivity(), tClass);
        Set<String> parameterKeySet = parameterMap.keySet();
        Object parameterValue;
        for (String parameterKey : parameterKeySet){
            parameterValue = parameterMap.get(parameterKey);
            if (parameterValue instanceof String){
                intent.putExtra(parameterKey,(String) parameterValue);
            }
            if (parameterValue instanceof Boolean){
                intent.putExtra(parameterKey,(Boolean) parameterValue);
            }
            if (parameterValue instanceof Integer){
                intent.putExtra(parameterKey,(Integer) parameterValue);
            }
            if (parameterValue instanceof Long){
                intent.putExtra(parameterKey,(Long) parameterValue);
            }
            if (parameterValue instanceof Double){
                intent.putExtra(parameterKey,(Double) parameterValue);
            }
            if (parameterValue instanceof Float){
                intent.putExtra(parameterKey,(Float) parameterValue);
            }
            if (parameterValue instanceof Short){
                intent.putExtra(parameterKey,(Short) parameterValue);
            }
            if (parameterValue instanceof Serializable){
                intent.putExtra(parameterKey,(Serializable) parameterValue);
            }
            if (parameterValue instanceof CharSequence){
                intent.putExtra(parameterKey,(CharSequence) parameterValue);
            }
            if (parameterValue instanceof Parcelable){
                intent.putExtra(parameterKey,(Parcelable) parameterValue);
            }
        }
        ActivityUtils.getTopActivity().startActivityForResult(intent,requestCode);
    }

    /**
     *  跳转页面 携带参数跳转
     * @param tClass 目标页面
     * @param parameterKey 携带字符串参数key
     * @param parameterValue 携带参数 值
     */
    public static void navigationCommonPage(Class<?> tClass,String parameterKey,Object parameterValue){
        Intent intent = new Intent(ActivityUtils.getTopActivity(), tClass);
        if (parameterValue instanceof String){
            intent.putExtra(parameterKey,(String) parameterValue);
        }
        if (parameterValue instanceof Boolean){
            intent.putExtra(parameterKey,(Boolean) parameterValue);
        }
        if (parameterValue instanceof Integer){
            intent.putExtra(parameterKey,(Integer) parameterValue);
        }
        if (parameterValue instanceof Long){
            intent.putExtra(parameterKey,(Long) parameterValue);
        }
        if (parameterValue instanceof Double){
            intent.putExtra(parameterKey,(Double) parameterValue);
        }
        if (parameterValue instanceof Float){
            intent.putExtra(parameterKey,(Float) parameterValue);
        }
        if (parameterValue instanceof Short){
            intent.putExtra(parameterKey,(Short) parameterValue);
        }
        if (parameterValue instanceof Serializable){
            intent.putExtra(parameterKey,(Serializable) parameterValue);
        }
        if (parameterValue instanceof CharSequence){
            intent.putExtra(parameterKey,(CharSequence) parameterValue);
        }
        if (parameterValue instanceof Parcelable){
            intent.putExtra(parameterKey,(Parcelable) parameterValue);
        }
        ActivityUtils.getTopActivity().startActivity(intent);
    }

    /**
     *  跳转页面 携带参数跳转且回传
     * @param tClass 目标页面
     * @param parameterKey 携带字符串参数key
     * @param parameterValue 携带参数 值
     */
    public static void navigationCommonPage(Class<?> tClass,String parameterKey,Object parameterValue,int requestCode){
        Intent intent = new Intent(ActivityUtils.getTopActivity(), tClass);
        if (parameterValue instanceof String){
            intent.putExtra(parameterKey,(String) parameterValue);
        }
        if (parameterValue instanceof Boolean){
            intent.putExtra(parameterKey,(Boolean) parameterValue);
        }
        if (parameterValue instanceof Integer){
            intent.putExtra(parameterKey,(Integer) parameterValue);
        }
        if (parameterValue instanceof Long){
            intent.putExtra(parameterKey,(Long) parameterValue);
        }
        if (parameterValue instanceof Double){
            intent.putExtra(parameterKey,(Double) parameterValue);
        }
        if (parameterValue instanceof Float){
            intent.putExtra(parameterKey,(Float) parameterValue);
        }
        if (parameterValue instanceof Short){
            intent.putExtra(parameterKey,(Short) parameterValue);
        }
        if (parameterValue instanceof Serializable){
            intent.putExtra(parameterKey,(Serializable) parameterValue);
        }
        if (parameterValue instanceof CharSequence){
            intent.putExtra(parameterKey,(CharSequence) parameterValue);
        }
        if (parameterValue instanceof Parcelable){
            intent.putExtra(parameterKey,(Parcelable) parameterValue);
        }
        ActivityUtils.getTopActivity().startActivityForResult(intent,requestCode);
    }
    /**
     *  跳转webView页面
     * @param title 标题
     * @param url webView 链接
     */
    public static void navigationSingleWebPage(String title, String url) {
        Intent intent = new Intent(ActivityUtils.getTopActivity(), SingleWebActivity.class);
        if (!StringUtils.isEmpty(title)) {
            intent.putExtra("webTitle", title);
        }
        intent.putExtra("webUrl", url);
        ActivityUtils.getTopActivity().startActivity(intent);
    }

    /**
     * 跳转webView页面
     * @param url webView 链接
     */
    public static void navigationSingleWebPage(String url) {
        navigationSingleWebPage(null, url);
    }
}
